package com.bskms.controller;

import com.bskms.service.FoodService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * AI菜谱推荐控制器
 * 
 * 功能说明：
 * 1. 智能菜谱推荐：基于用户需求提供个性化的菜谱建议
 * 2. 需求理解：解析用户的饮食偏好、时间限制、营养需求等
 * 3. 菜谱生成：调用AI服务生成详细的菜谱内容和制作步骤
 * 4. 结果优化：对AI返回结果进行格式化和错误处理
 * 
 * 设计思路：
 * - 集成DeepSeek AI服务，提供智能菜谱推荐能力
 * - 复用现有的FoodService，避免重复开发
 * - 使用/sa路径，与系统管理功能保持一致
 * - 提供友好的错误处理和用户提示
 * - 支持多种用户需求格式的输入
 * 
 * 技术特点：
 * - AI模型集成，提供智能推荐
 * - 需求解析，理解用户意图
 * - 结果优化，提升用户体验
 * - 错误处理，确保系统稳定性
 * 
 * @author 系统开发者
 * @version 1.0
 * @since 2024
 */
@Controller
@RequestMapping("/sa") // 与现有菜单管理接口路径保持一致（/sa），便于权限控制
public class AIRecipeController {

    // 菜谱服务接口，复用现有的FoodService，无需新增Service
    @Autowired
    private FoodService foodService;

    /**
     * AI菜谱推荐接口
     * 
     * 功能说明：
     * - 接收用户的菜谱需求描述
     * - 调用AI服务生成个性化菜谱推荐
     * - 返回详细的菜谱内容和制作步骤
     * - 提供友好的错误处理和用户提示
     * 
     * 实现逻辑：
     * 1. 接收前端传递的用户需求参数
     * 2. 调用foodService.getAIRecipeRecommend()方法
     * 3. 该方法内部会调用AIRecipeUtils工具类
     * 4. AIRecipeUtils会调用DeepSeek API获取推荐结果
     * 5. 对返回结果进行格式化和错误处理
     * 6. 返回最终的菜谱推荐内容
     * 
     * 支持的需求格式示例：
     * - "清淡家常菜，30分钟完成"
     * - "适合儿童的营养餐"
     * - "素食主义者，高蛋白"
     * - "减肥餐，低卡路里"
     * 
     * @param userDemand 用户需求描述（如"清淡家常菜，30分钟完成"）
     * @return String AI推荐结果（成功返回推荐文本，失败返回错误提示）
     */
    @PostMapping("/getAIRecipeRecommend")
    @ResponseBody
    public String getAIRecipeRecommend(@RequestParam("userDemand") String userDemand) {
        // 调用Service的AI推荐方法
        String aiResult = foodService.getAIRecipeRecommend(userDemand);
        // 处理空结果，返回友好的错误提示
        return aiResult == null ? "AI推荐暂不可用，请检查需求描述或稍后重试" : aiResult;
    }
}